package br.com.pauloamorim.modelo;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.JoinTable;
import javax.persistence.ManyToMany;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

/**
 * Entity implementation class for Entity: Autor
 *
 */
@Entity
public class Autor implements Serializable {

	private static final long serialVersionUID = 1L;
	   
	@Id
	@Column(name="ID_AUTOR")
	private Long chavePrimaria;

	@Column
	private String nome;
	
	@Temporal(TemporalType.DATE)
	@Column
	private Date dataNascimento;
	
	@ManyToMany(fetch=FetchType.LAZY, cascade=CascadeType.ALL)
	@JoinTable(name="AUTOR_LIVRO", joinColumns={
				@JoinColumn(name="ID_AUTOR")
			}, 
			inverseJoinColumns={
				@JoinColumn(name="ID_LIVRO")
			}
	)
	private List<Livro> livros = new ArrayList<Livro>();

	public Autor() {
		super();
	}   
	public Long getChavePrimaria() {
		return this.chavePrimaria;
	}

	public void setChavePrimaria(Long chavePrimaria) {
		this.chavePrimaria = chavePrimaria;
	}   
	public String getNome() {
		return this.nome;
	}

	public void setNome(String nome) {
		this.nome = nome;
	}   
	public Date getDataNascimento() {
		return this.dataNascimento;
	}

	public void setDataNascimento(Date dataNascimento) {
		this.dataNascimento = dataNascimento;
	}
	public List<Livro> getLivros() {
		return livros;
	}
	public void setLivros(List<Livro> livros) {
		this.livros = livros;
	}
   
}
